﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

using System.Configuration;

namespace CSharpInterfaceTeach
{
    /// <summary>
    /// 基于反射创建对象（简单工厂设计模式）
    /// </summary>
    public class ObjectFactory
    {
        private static string AssName = ConfigurationManager.AppSettings["assName"];
        
        /// <summary>
        /// 创建设备操作对象
        /// 这个完全不用关心谁去使用这个对象
        /// </summary>
        /// <returns></returns>
        public static IEquipOperation GetOperation()
        {
            //获取类的完全限定名
            string className = ConfigurationManager.AppSettings["className"];

            //使用反射创建对象，并返回
            return (IEquipOperation)Assembly.Load(AssName).CreateInstance(className);
        }
        
        //其他的类的反射方法，可以在这个地方继续写

    }
}
